﻿namespace ClassDataExport
{
    /// <summary>
    /// Propertiesklasse, die in der Datenklasse verwendet wird um anzugeben wie das Property heisst was ausgegeben werden soll bzw. angibt welcher Formatstring für die Ausgabe verwendet werden soll.
    /// </summary>
    public class OutputProperties
    {
        #region Porperties
        /// <summary>
        /// Formatstring z.b. für ein Datum "dd.mm.yyyy"
        /// </summary>
        public string FormatString { get; set;}

        /// <summary>
        /// Name des Properties was ausgegeben werden soll
        /// </summary>
        public string PropertyName { get; set;}

        /// <summary>
        /// Bezeichnung der Spalte für Excel und CSV dateien
        /// </summary>
        public string ColumnHeaderName { get; set; }
        #endregion

        #region Konstruktor
        /// <summary>
        /// Initialisieren der OutputProperties
        /// </summary>
        /// <param name="propertyName">Name des Properties was ausgelesen werden soll</param>
        /// <param name="columnHeaderName">Name im Tabellenkopf für CSV und Excel Dateien</param>
        /// <param name="formatString">Formatstring des Properties, z.B: "mmm dd" für ein Datum</param>
        public OutputProperties(string propertyName, string columnHeaderName, string formatString)
        {
            FormatString = formatString;
            PropertyName = propertyName;
            ColumnHeaderName = columnHeaderName;

            //Aufpassen das im Formatstring kein Null Value gesetzt wird.
            if (formatString == null)
            {
                FormatString = string.Empty;
            }

            //Wenn kein Headername angegeben wurde, den Propertynamen nehmen als Spaltenkopf
            if (string.IsNullOrEmpty(columnHeaderName))
            {
                ColumnHeaderName = propertyName;
            }
        }

        /// <summary>
        /// Initialisieren der OutputProperties
        /// </summary>
        /// <param name="propertyName">Name des Properties was ausgelesen werden soll</param>
        /// <param name="columnHeaderName">Name im Tabellenkopf für CSV und Excel Dateien</param>
        public OutputProperties(string propertyName, string columnHeaderName) : this(propertyName, columnHeaderName, string.Empty)
        {
        }

        /// <summary>
        /// Initialieren der Outputproperties
        /// </summary>
        /// <param name="propertyName">Name des Properties was ausgelesen werden soll</param>
        public OutputProperties(string propertyName) : this (propertyName, string.Empty, string.Empty)
        {
        }

        #endregion
    }
}
